Computer compiler systems typically employ a linker that may combine files located in different portions of the computer system, such as in the computer system memory. During linking an intermediate code file may be compiled thereby creating object code files that correspond to compiler directives associated with the intermediate code file. It will be appreciated that compiler directives may be instructions or data that affect the manner of compilation thereby determining the result of the compilation. For instance, compiler directives may be used to manage the compilation of intermediate code.
Minimizing the number of files which are compiled during the process of transforming intermediate code files into object code files and linking the object code files, reduces the computer system resources used by the compiler system. That is, the efficiency of a linker may be improved by minimizing the amount of computer resources required to complete compilation of intermediate code files and locate the resulting object code files for execution on the computer system.
Improvement in the efficiency of compiler systems has been hindered by the time expended and computer resources required by linkers to compile intermediate code files into object codes files. Therefore, there has been a need to selectively reuse object code files when portions of the intermediate code file that affect the resulting object code file, such as compiler directives, have not changed between invocations of the linker. That is, computer system linkers have not determined when object code files that resulted from previous compilations of intermediate code files may be reused. Further, typical linkers have not identified individual object code files that may be reused in subsequent invocations of the linker.
The computer resources required to manage arbitrary copying and movement of intermediate code files and object code files, within a file system and between file systems, continues to add to the overall consumption of computer resources by linkers. For instance, linkers also have not reused object code files between different file systems without relying on the location within a file system of either the object code file or of the intermediate code file.